第一行输入N,第二行输入N个数字,只包含0,1,2
输出字符串要移几位才能解开密码,如果无论移位多少次都解不开密码,输出-1
5 02120 5 02120
1 1
from collections import deque from copy import deepcopy def switcher(s,level): ss = [] for i in s: ss.append(i) result = [] for i in range(len(ss)-1): new_one = deepcopy(ss) new_one[i+1] = ss[i] new_one[i] = ss[i+1] new_s = ''.join(new_one) result.append( (new_s,level+1) ) return result while True: try: m = input() orig_s = input().strip() if '2012' in orig_s: print(0) continue q = deque([]) used = set() q.extend(switcher(orig_s,0)) used.add(orig_s) #print(orig_s) while len(q) != 0: #print(q) one,level = q.popleft() if one in used: continue else: if '2012' in one: print(level) break else: q.extend(switcher(one,level)) used.add(one) else: print(-1) except: break